import axios from 'axios'
import { Toast } from 'vant'
import store from '@/store'
import JSONBig from 'json-bigint'

const request = axios.create({
  // 对data 进行任意转换
  // JSONBig.parse 不能处理普通字符串 只能处理JSON字符串
  transformResponse: [
    function (data) {
      try {
        return JSONBig.parse(data)
      } catch (err) {
        return data
      }
    }
  ],
  baseURL: 'http://toutiao-app.itheima.net'
  // baseURL: 'http://ttapi.research.itcast.cn/app'
})

// 拦截器
// 发送请求前进行统一的配置
// 拦截所有的请求
const notLoading = ['/v1_1/articles', '/v1_0/search', '/v1_0/comments'] // 不带参数的接口

request.interceptors.request.use(config => {
  // console.log(config)
  const isDetail = /\/v1_0\/articles\/\d+/.test(config.url) // 带参数的接口

  if (store.state.user) {
    config.headers.Authorization = 'Bearer ' + store.state.user.token
  }
  if (notLoading.indexOf(config.url) === -1 && !isDetail) {
    Toast.loading({
      duration: 0, // 持续展示 toast
      message: '加载中...',
      forbidClick: true // 一个透明的遮罩层避免点击其他按钮
    })
  }
  return config
})
// 请求拦截器
request.interceptors.response.use(res => {
  Toast.clear()
  return res
})
export default request
